Skip to content

fix(server): reset connected characters on graceful shutdown - #80

Merged
leocagli merged 2 commits into
Bitcoindefi:mainfrom
Yerickmondra15:agent/graceful-shutdown-26
Aug 27, 2026
Merged

fix(server): reset connected characters on graceful shutdown#80
leocagli merged 2 commits into
Bitcoindefi:mainfrom
Yerickmondra15:agent/graceful-shutdown-26

Conversation

@Yerickmondra15

Copy link
Copy Markdown

Resumen

  • maneja SIGINT y SIGTERM de forma idempotente y deja de aceptar actividad nueva durante el apagado
  • avisa a los clientes, vacía sus buffers y cierra WebSockets con código 1001 y una razón visible en el frontend
  • llama a POST /internal/characters/reset-connected con un timeout de 5 segundos y termina aunque la API no responda
  • ejecuta Node directamente como PID 1 en la imagen para que Docker entregue SIGTERM al proceso correcto
  • conserva el reset al arrancar como respaldo para caídas abruptas
  • añade pruebas del orden de limpieza, timeout e idempotencia, ejecutadas por CI

Causa raíz

El servidor no registraba handlers para las señales de apagado. Además, la imagen ejecutaba el servidor detrás de pnpm, que terminaba al recibir SIGTERM sin entregar la señal al proceso Node, por lo que agregar solamente los handlers no habría corregido docker compose stop.

Impacto

Los personajes se desmarcan antes de detener el servidor y pueden volver a entrar después de un reinicio. Si la API está caída, el contenedor sigue terminando dentro del período de gracia de Docker. Los jugadores reciben un mensaje de reinicio en lugar del error genérico de conexión cerrada.

Closes #26

Validación

  • server: 3 pruebas unitarias, ESLint, TypeScript y build
  • frontend: ESLint, TypeScript y build
  • imagen Docker construida desde server/Dockerfile
  • SIGTERM con API disponible: se observó POST /internal/characters/reset-connected, salida 0 en 0,46 s
  • SIGTERM con API sin responder: timeout a 5 s, salida 0 en 5,42 s (antes del límite de 10 s)

@Yerickmondra15
Yerickmondra15 marked this pull request as ready for review August 18, 2026 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

El server no desmarca personajes al apagarse: quedan bloqueados tras un reinicio

2 participants